home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Visual Database / Visual dBase v5.5 / SAMPLES1.PAK / CUSTOMER.WFM < prev    next >
Text File  |  1995-07-18  |  24KB  |  750 lines

  1. *******************************************************************************
  2. *  PROGRAM:      Customer.wfm
  3. *
  4. *  WRITTEN BY:   Borland Samples Group
  5. *
  6. *  DATE:         12/93
  7. *
  8. *  UPDATED:      5/95
  9. *
  10. *  REVISION:     $Revision:   1.110  $
  11. *
  12. *  VERSION:      Visual dBASE
  13. *
  14. *  DESCRIPTION:  This program displays information about the customers of a
  15. *                company.  It contains entryfields and radio buttons with
  16. *                various customer information.  A browse object displays
  17. *                orders made by this customer.  To add, delete, and search
  18. *                for customers, a menu (Customer.mnu) is used.  This form
  19. *                also has custom buttons (from Buttons.cc) to allow traversing
  20. *                through customers.  Information can be viewed in either
  21. *                View mode or in Edit mode, which is toggled in the menu.
  22. *
  23. *  PARAMETERS:   None
  24. *
  25. *  CALLS:        Customer.mnu         (Menu file)
  26. *                Buttons.cc           (Custom Controls file)
  27. *                Orders.wfm           (Orders detail form)
  28. *                Customer.qbe         (View of tables)
  29. *
  30. *  USAGE:        DO Customer.wfm      && Note that you can also DO Orders.wfm
  31. *
  32. *******************************************************************************
  33. #include <Messdlg.h>
  34. shell(.F., .T.)
  35. create session
  36. set talk off
  37. set ldCheck off                        && To avoid language driver conflicts
  38.  
  39. ** END HEADER -- do not remove this line*
  40. * Generated on 05/23/95
  41. *
  42. parameter bModal
  43. local f
  44. f = new CUSTOMERFORM()
  45. if (bModal)
  46.    f.mdi = .F. && ensure not MDI
  47.    f.ReadModal()
  48. else
  49.    f.Open()
  50. endif
  51. CLASS CUSTOMERFORM OF FORM
  52.    Set Procedure to &_dbwinhome.samples\Buttons.cc Additive
  53.    this.EscExit = .F.
  54.    this.OnClose = CLASS::ONCLOSE
  55.    this.View = "CUSTOMER.QBE"
  56.    this.Text = "Customer -- View Mode"
  57.    this.Top = 0
  58.    this.Height = 21.5293
  59.    this.Width = 88.333
  60.    this.TopMost = .F.
  61.    this.PageNo = 1
  62.    this.Maximize = .F.
  63.    this.Minimize = .F.
  64.    this.Left = 1.5
  65.    this.MousePointer = 1
  66.    this.ColorNormal = "BtnFace"
  67.    this.MenuFile = "CUSTOMER.MNU"
  68.  
  69.    DEFINE PREVBUTTON PREVCUSTBUTTON OF THIS;
  70.        PROPERTY;
  71.          Group .T.,;
  72.          Default .T.,;
  73.          Top 19.6191,;
  74.          Height 1.5566,;
  75.          Width 14.1504,;
  76.          OnClick CLASS::PREVIOUS,;
  77.          Left 1.3496
  78.  
  79.    DEFINE NEXTBUTTON NEXTCUSTBUTTON OF THIS;
  80.        PROPERTY;
  81.          Group .F.,;
  82.          Top 19.6191,;
  83.          Height 1.5566,;
  84.          Width 14.2207,;
  85.          OnClick CLASS::NEXT,;
  86.          Left 16.2793
  87.  
  88.    DEFINE PUSHBUTTON FIRSTCUSTBUTTON OF THIS;
  89.        PROPERTY;
  90.          Group .F.,;
  91.          Text "F&irst",;
  92.          Top 19.6191,;
  93.          Height 1.5566,;
  94.          Width 14.0869,;
  95.          PageNo 1,;
  96.          OnClick {;form.CheckCommit(form.inEditMode);go top},;
  97.          Left 31.0791,;
  98.          ColorNormal "BtnText/BtnFace",;
  99.          StatusMessage "Go to the first record."
  100.  
  101.    DEFINE PUSHBUTTON LASTCUSTBUTTON OF THIS;
  102.        PROPERTY;
  103.          Group .F.,;
  104.          Text "&Last",;
  105.          Top 19.6191,;
  106.          Height 1.5566,;
  107.          Width 14.2168,;
  108.          PageNo 1,;
  109.          OnClick {;form.CheckCommit(form.inEditMode);go bottom},;
  110.          Left 45.9492,;
  111.          ColorNormal "BtnText/BtnFace",;
  112.          StatusMessage "Go to the last customer."
  113.  
  114.    DEFINE RECTANGLE NAMEPHONEBOX OF THIS;
  115.        PROPERTY;
  116.          Text "Customer Info",;
  117.          Height 18.5635,;
  118.          Top 0.2598,;
  119.          Width 85.8164,;
  120.          PageNo 1,;
  121.          Left 1.3496,;
  122.          Border .T.,;
  123.          ColorNormal "BtnFace"
  124.  
  125.    DEFINE TEXT NAMETEXT OF THIS;
  126.        PROPERTY;
  127.          Text "N&ame:",;
  128.          Top 1.3193,;
  129.          Height 1.3193,;
  130.          Width 10.8037,;
  131.          PageNo 1,;
  132.          Left 2.0293,;
  133.          Border .F.,;
  134.          ColorNormal "B/BtnFace",;
  135.          Alignment 5
  136.  
  137.    DEFINE ENTRYFIELD NAMEENTRY OF THIS;
  138.        PROPERTY;
  139.          ColorHighLight "B+/W*",;
  140.          Top 1.3193,;
  141.          Height 1.3193,;
  142.          Width 53.9805,;
  143.          Enabled .F.,;
  144.          PageNo 1,;
  145.          DataLink "CUSTOMER->NAME",;
  146.          Left 13.5195,;
  147.          OnChange CLASS::CHANGESMADE,;
  148.          Border .T.,;
  149.          ColorNormal "N/BtnFace"
  150.  
  151.    DEFINE TEXT CUSTNOTEXT OF THIS;
  152.        PROPERTY;
  153.          Text "Customer #:",;
  154.          Top 1.3193,;
  155.          Height 1.3193,;
  156.          Width 13.5537,;
  157.          PageNo 1,;
  158.          Left 70.2793,;
  159.          Border .F.,;
  160.          ColorNormal "B/BtnFace",;
  161.          Alignment 3
  162.  
  163.    DEFINE ENTRYFIELD CUSTNOENTRY OF THIS;
  164.        PROPERTY;
  165.          ColorHighLight "B+/W*",;
  166.          Top 2.6592,;
  167.          Height 1.3193,;
  168.          Width 11.5537,;
  169.          Enabled .F.,;
  170.          PageNo 1,;
  171.          DataLink "CUSTOMER_N",;
  172.          Left 70.2793,;
  173.          OnChange CLASS::CHANGESMADE,;
  174.          Border .T.,;
  175.          ColorNormal "N/BtnFace"
  176.  
  177.    DEFINE TEXT STREETTEXT OF THIS;
  178.        PROPERTY;
  179.          Text "&Street:",;
  180.          Top 2.6592,;
  181.          Height 1.3193,;
  182.          Width 10.8037,;
  183.          PageNo 1,;
  184.          Left 2.0293,;
  185.          Border .F.,;
  186.          ColorNormal "B/BtnFace",;
  187.          Alignment 5
  188.  
  189.    DEFINE ENTRYFIELD STREETENTRY OF THIS;
  190.        PROPERTY;
  191.          ColorHighLight "B+/W*",;
  192.          Top 2.6592,;
  193.          Height 1.3193,;
  194.          Width 53.9805,;
  195.          Enabled .F.,;
  196.          PageNo 1,;
  197.          DataLink "STREET",;
  198.          Left 13.5195,;
  199.          OnChange CLASS::CHANGESMADE,;
  200.          Border .T.,;
  201.          ColorNormal "N/BtnFace"
  202.  
  203.    DEFINE TEXT CITYTEXT OF THIS;
  204.        PROPERTY;
  205.          Text "Cit&y:",;
  206.          Top 3.9795,;
  207.          Height 1.3145,;
  208.          Width 10.8037,;
  209.          PageNo 1,;
  210.          Left 2.0293,;
  211.          Border .F.,;
  212.          ColorNormal "B/BtnFace",;
  213.          Alignment 5
  214.  
  215.    DEFINE ENTRYFIELD CITYENTRY OF THIS;
  216.        PROPERTY;
  217.          ColorHighLight "B+/W*",;
  218.          Top 3.9795,;
  219.          Height 1.3145,;
  220.          Width 22.3135,;
  221.          Enabled .F.,;
  222.          PageNo 1,;
  223.          DataLink "CITY",;
  224.          Left 13.5195,;
  225.          OnChange CLASS::CHANGESMADE,;
  226.          Border .T.,;
  227.          ColorNormal "N/BtnFace"
  228.  
  229.    DEFINE TEXT STATETEXT OF THIS;
  230.        PROPERTY;
  231.          Text "State/Pro&vince:",;
  232.          Top 3.9795,;
  233.          Height 1.3145,;
  234.          Width 16.1768,;
  235.          PageNo 1,;
  236.          Left 36.4893,;
  237.          Border .F.,;
  238.          ColorNormal "B/BtnFace",;
  239.          Alignment 5
  240.  
  241.    DEFINE ENTRYFIELD STATEENTRY OF THIS;
  242.        PROPERTY;
  243.          ColorHighLight "B+/W*",;
  244.          Top 3.9795,;
  245.          Height 1.3145,;
  246.          Width 14.1104,;
  247.          Enabled .F.,;
  248.          PageNo 1,;
  249.          DataLink "STATE_PROV",;
  250.          Left 53.3896,;
  251.          OnChange CLASS::CHANGESMADE,;
  252.          Border .T.,;
  253.          ColorNormal "N/BtnFace"
  254.  
  255.    DEFINE TEXT ZIPTEXT OF THIS;
  256.        PROPERTY;
  257.          Text "&Zip Code:",;
  258.          Top 5.2998,;
  259.          Height 1.3193,;
  260.          Width 10.8037,;
  261.          PageNo 1,;
  262.          Left 2.0293,;
  263.          Border .F.,;
  264.          ColorNormal "B/BtnFace",;
  265.          Alignment 5
  266.  
  267.    DEFINE ENTRYFIELD ZIPENTRY OF THIS;
  268.        PROPERTY;
  269.          ColorHighLight "B+/W*",;
  270.          Top 5.2998,;
  271.          Height 1.3193,;
  272.          Width 22.3135,;
  273.          Enabled .F.,;
  274.          PageNo 1,;
  275.          DataLink "ZIP_POSTAL",;
  276.          Left 13.5195,;
  277.          OnChange CLASS::CHANGESMADE,;
  278.          Border .T.,;
  279.          ColorNormal "N/BtnFace"
  280.  
  281.    DEFINE TEXT COUNTRYTEXT OF THIS;
  282.        PROPERTY;
  283.          Text "Count&ry:",;
  284.          Top 5.2998,;
  285.          Height 1.3193,;
  286.          Width 14.8262,;
  287.          PageNo 1,;
  288.          Left 37.8398,;
  289.          Border .F.,;
  290.          ColorNormal "B/BtnFace",;
  291.          Alignment 5
  292.  
  293.    DEFINE ENTRYFIELD COUNTRYENTRY OF THIS;
  294.        PROPERTY;
  295.          ColorHighLight "B+/W*",;
  296.          Top 5.2998,;
  297.          Height 1.3193,;
  298.          Width 14.1104,;
  299.          Enabled .F.,;
  300.          PageNo 1,;
  301.          DataLink "COUNTRY",;
  302.          Left 53.3896,;
  303.          OnChange CLASS::CHANGESMADE,;
  304.          Border .T.,;
  305.          ColorNormal "N/BtnFace"
  306.  
  307.    DEFINE TEXT PHONETEXT OF THIS;
  308.        PROPERTY;
  309.          Text "P&hone:",;
  310.          Top 6.6299,;
  311.          Height 1.3105,;
  312.          Width 10.8037,;
  313.          PageNo 1,;
  314.          Left 2.0293,;
  315.          Border .F.,;
  316.          ColorNormal "B/BtnFace",;
  317.          Alignment 5
  318.  
  319.    DEFINE ENTRYFIELD PHONEENTRY OF THIS;
  320.        PROPERTY;
  321.          ColorHighLight "B+/W*",;
  322.          Top 6.6299,;
  323.          Height 1.3105,;
  324.          Width 22.3135,;
  325.          Enabled .F.,;
  326.          PageNo 1,;
  327.          DataLink "PHONE",;
  328.          Left 13.5195,;
  329.          OnChange CLASS::CHANGESMADE,;
  330.          Border .T.,;
  331.          ColorNormal "N/BtnFace"
  332.  
  333.    DEFINE TEXT ORDERSTEXT OF THIS;
  334.        PROPERTY;
  335.          Text "&Orders:",;
  336.          Top 7.9492,;
  337.          Height 1.3193,;
  338.          Width 10.8037,;
  339.          PageNo 1,;
  340.          Left 2.0293,;
  341.          Border .F.,;
  342.          ColorNormal "B/BtnFace",;
  343.          Alignment 5
  344.  
  345.    DEFINE BROWSE CHILDBROWSE OF THIS;
  346.        PROPERTY;
  347.          CUATab .T.,;
  348.          FontBold .F.,;
  349.          OnLeftDblClick CLASS::CHILDBROWSEDBLCLICK,;
  350.          ScrollBar 2,;
  351.          Modify .F.,;
  352.          Fields "ORDERS->ORDER_NO\H='ORDER NO',ORDERS->TOTAL\9\P='9,999,999.99',ORDERS->SALE_DATE\H='SALE DATE',ORDERS->SHIP_DATE\H='SHIP DATE',ORDERS->AMT_PAID\H='AMT PAID'\P='9,999,999.99',ORDERS->TERMS\12",;
  353.          Top 8.2197,;
  354.          Height 5.6035,;
  355.          ColorHighLight "WindowText/Window",;
  356.          Width 72.6465,;
  357.          PageNo 1,;
  358.          OnNavigate CLASS::BROWSEONNAVIGATE,;
  359.          ShowRecNo .F.,;
  360.          Alias "ORDERS",;
  361.          ShowDeleted .F.,;
  362.          Left 13.5195,;
  363.          OnChange CLASS::CHANGESMADE,;
  364.          Append .F.,;
  365.          Delete .F.,;
  366.          ColorNormal "N/BtnFace"
  367.  
  368.    DEFINE TEXT SIGNATURETEXT OF THIS;
  369.        PROPERTY;
  370.          Text "Signature:",;
  371.          Top 14.0498,;
  372.          Height 1.3027,;
  373.          Width 20.3936,;
  374.          PageNo 1,;
  375.          Left 57.4395,;
  376.          Border .F.,;
  377.          ColorNormal "B/BtnFace",;
  378.          Alignment 3
  379.  
  380.    DEFINE IMAGE SIGNATUREIMAGE OF THIS;
  381.        PROPERTY;
  382.          Top 15.1494,;
  383.          Height 2.5557,;
  384.          Width 28.3936,;
  385.          PageNo 1,;
  386.          Left 57.4395,;
  387.          DataSource "BINARY SIGNATURE"
  388.  
  389.    DEFINE TEXT NOTESTEXT OF THIS;
  390.        PROPERTY;
  391.          Text "No&tes:",;
  392.          Top 14.0498,;
  393.          Height 1.3027,;
  394.          Width 10.8037,;
  395.          PageNo 1,;
  396.          Left 2.0293,;
  397.          Border .F.,;
  398.          ColorNormal "B/BtnFace",;
  399.          Alignment 5
  400.  
  401.    DEFINE EDITOR NOTESEDITOR OF THIS;
  402.        PROPERTY;
  403.          OnGotFocus {;if this.Modify;this.colorNormal = "B+/W*";endif},;
  404.          CUATab .T.,;
  405.          OnLostFocus {;if this.Modify;this.colorNormal = "N/BtnFace";endif},;
  406.          Modify .F.,;
  407.          Top 14.3193,;
  408.          Height 4.21,;
  409.          Width 43.3135,;
  410.          PageNo 1,;
  411.          DataLink "CUSTOMER->NOTES",;
  412.          Left 13.5195,;
  413.          OnChange CLASS::CHANGESMADE,;
  414.          Border .T.,;
  415.          ColorNormal "N/BtnFace"
  416.  
  417.    DEFINE IMAGE LOGOIMAGE OF THIS;
  418.        PROPERTY;
  419.          Top 18.8896,;
  420.          Height 2.8154,;
  421.          Width 14.8701,;
  422.          PageNo 1,;
  423.          Left 71.6299,;
  424.          DataSource "FILE DIVESHOP.BMP",;
  425.          Alignment 1
  426.  
  427.    DEFINE SAMPLEINFOBUTTON CUSTOMERINFOBUTTON OF THIS;
  428.        PROPERTY;
  429.          Group .T.,;
  430.          Top 0.6992,;
  431.          Height 1.1826,;
  432.          Width 3.5,;
  433.          Left 83.5
  434.  
  435.    procedure Open
  436.    ****************************************************************************
  437.    private custNoField, orderField
  438.  
  439.    if type("form.init") = "U"
  440.       form.init = .T.
  441.  
  442.       set skip to                        && Customer.qbe has set skip to orders
  443.       set exact off                      && Customer.qbe has set exact on
  444.  
  445.       set procedure to &_dbwinhome.samples\SampProc.prg additive
  446.  
  447.       *** Do calculations in other area, so form doesn't update on record moves
  448.       select select()
  449.       use customer again alias temp
  450.       custNoField = field(1)             && Field customer_n
  451.       set order to &custNoField          && Tag name is same as field name
  452.       go bottom
  453.       form.maxCustNo = &custNoField      && Max value for the key - used for
  454.                                          &&   creating new customers
  455.       use
  456.       select customer
  457.  
  458.       *** Other setup work
  459.       form.inEditMode  = .F.              && Indicate view/edit state
  460.       form.changesMade = .F.              && Changes haven't been made yet
  461.       form.previousRecord = .F.           && Save record number when appending
  462.       form.nextCustButton.SetFocus()      && Since we are at the first
  463.                                           && customer, can only move forward
  464.       if type("form.parentOrdersForm") <> "U"
  465.          form.escExit = .T.                  && Esc is ok if have parent
  466.          form.prevCustButton.enabled  = .F.  && Disable navigation buttons if
  467.          form.nextCustButton.enabled  = .F.  &&   called from orders.
  468.          form.firstCustButton.enabled = .F.
  469.          form.lastCustButton.enabled  = .F.
  470.          form.root.customer.search.enabled = .F.
  471.          form.root.customer.add.enabled = .F.
  472.       endif
  473.    endif
  474.  
  475.    form.customerInfoButton.sampleName = "Customer.wfm"
  476.    form::Open()                            && Now the form actually opens
  477.  
  478.  
  479.    ****************************************************************************
  480.  
  481.    procedure OnClose
  482.  
  483.    * Clean up.
  484.    ****************************************************************************
  485.  
  486.    if this.inEditMode
  487.       form.ViewEdit()                      && Finish transaction
  488.    endif
  489.                                            && Close Orders form if it exists
  490.    if .not. (type ("form.childOrdersForm") $ "U,L")
  491.       form.childOrdersForm.Release()
  492.       close procedure &_dbwinhome.samples\Orders.wfm
  493.    endif
  494.    if type("form.parentOrdersForm") = "U"  && If called from Orders.wfm,
  495.                                            && leave shell(.F.)
  496.       shell(.T.)
  497.    endif
  498.  
  499.    close procedure &_dbwinhome.samples\SampProc.prg,;
  500.       &_dbwinhome.samples\Buttons.cc
  501.  
  502.  
  503.    ****************************************************************************
  504.  
  505.    procedure BrowseOnNavigate
  506.    ****************************************************************************
  507.  
  508.    if eof()
  509.       form.root.customer.viewEdit.enabled = .F.
  510.    else
  511.       form.root.customer.viewEdit.enabled = .T.
  512.    endif
  513.    form.CallShowOrders()
  514.  
  515.  
  516.    ****************************************************************************
  517.  
  518.    procedure ChangesMade
  519.  
  520.    * Indicate that changes have been made to the current record
  521.    ****************************************************************************
  522.    form.changesMade = .T.
  523.  
  524.  
  525.    ****************************************************************************
  526.  
  527.    procedure Next
  528.  
  529.    * Go to next record.
  530.    ****************************************************************************
  531.  
  532.    form.CheckCommit(form.inEditMode)
  533.    if .not. eof()
  534.       NEXTBUTTON::OnClick()
  535.    endif
  536.  
  537.  
  538.    ****************************************************************************
  539.  
  540.    procedure Previous
  541.  
  542.    * Go to previous record.
  543.    ****************************************************************************
  544.  
  545.    form.CheckCommit(form.inEditMode)
  546.    PREVBUTTON::OnClick()
  547.  
  548.  
  549.    ****************************************************************************
  550.  
  551.    procedure ChildBrowseDblClick
  552.  
  553.    * When double click in Orders Browse, bring up Orders.wfm, displaying the
  554.    * orders for the current customer
  555.    ****************************************************************************
  556.  
  557.    form.root.customer.current_orders.OnClick()
  558.  
  559.  
  560.    ****************************************************************************
  561.  
  562.    procedure CheckCommit (newInEditMode)
  563.  
  564.    * Check if must finish transaction.
  565.    ****************************************************************************
  566.    private orderField, changesMade
  567.  
  568.    changesMade = form.changesMade
  569.    if form.changesMade .and. form.inEditMode
  570.       orderField = field(1)                  && Field Customer_n
  571.       if ConfirmationMessage("Commit changes?",;
  572.                               FormatStr("Customer %1",&orderField)) = YES
  573.          commit()
  574.       else
  575.          rollback()
  576.          if .not. empty(form.previousRecord)
  577.             go form.previousRecord
  578.             form.previousRecord = .F.
  579.          endif
  580.       endif
  581.       if form.inEditMode .and. newInEditMode
  582.          begintrans()
  583.       endif
  584.       form.changesMade = .F.
  585.    endif
  586.    if form.inEditMode <> newInEditMode
  587.       if newInEditMode                       && Going to Edit mode
  588.          begintrans()
  589.       else                                   && Going to View mode
  590.          if .not. changesMade
  591.             rollback()
  592.          endif
  593.       endif
  594.       form.inEditMode = newInEditMode
  595.    endif
  596.  
  597.    ****************************************************************************
  598.  
  599.    procedure ViewEdit
  600.  
  601.    * Toggle between View and Edit modes.
  602.    ****************************************************************************
  603.    local inEditMode, editMenu, control
  604.  
  605.    editMenu = form.root.customer.viewEdit
  606.  
  607.    *** If ending edit mode then close transaction, otherwise open it.
  608.    if form.inEditMode
  609.       form.checkChanged(.F.)
  610.       editMenu.text = "&Edit"
  611.       editMenu.shortcut = "Ctrl-E"
  612.       editMenu.statusMessage = "Edit data."
  613.       form.root.customer.delete.enabled = .F.      && disabled in view mode
  614.       form.CheckCommit(.F.)                        && Check transaction and
  615.       form.text = "Customer -- View Mode"          && change mode to View
  616.       form.notesEditor.colorNormal = "N/W"
  617.       form.childBrowse.modify = .F.
  618.       form.notesEditor.modify = .F.
  619.       form.statusmessage = "In View Mode. " + ;
  620.                            "Select Customer - Edit menu to " + ;
  621.                            "edit/delete data."
  622.       form.nextcustbutton.SetFocus()
  623.    else                                            && Switch to edit mode
  624.       editMenu.text = "Vi&ew"
  625.       editMenu.shortcut = "Ctrl-E"
  626.       editMenu.statusMessage = "View data."
  627.       form.root.customer.delete.enabled = .T.      && enabled in edit mode
  628.       form.CheckCommit(.T.)                        && Check transaction and
  629.       form.text = "Customer -- Edit Mode"          && change mode to Edit
  630.       form.childBrowse.modify = .T.
  631.       form.notesEditor.modify = .T.
  632.       form.statusmessage = "In Edit Mode.  " + ;
  633.                            "Select menu Customer - View to switch " + ;
  634.                            "to View mode."
  635.       form.nameEntry.SetFocus()     && Move to the name entryfield
  636.    endif
  637.    inEditMode = form.inEditMode     && Faster if we don't reference a form
  638.    control = form.first             &&    variable each time through the loop
  639.    do
  640.       if .not. control.className $ "BROWSE,EDITOR,NEXTBUTTON,PREVBUTTON,PUSHBUTTON,IMAGE,TEXT"
  641.          control.enabled = inEditMode
  642.       endif
  643.       control = control.before
  644.    until control.name = form.first.name
  645.  
  646.    form.custNoEntry.enabled = .F.       && Key field is always disabled
  647.    form.nameEntry.SetFocus()            && Move to the name entryfield
  648.  
  649.  
  650.    ****************************************************************************
  651.  
  652.    procedure CheckChanged(callCommit)
  653.  
  654.    * Check if changes have been made to the current entryfield.  This procedure
  655.    * is called from menu routines to make sure the form.changesMade gets
  656.    * updated when a menu is selected while the changed control has focus.
  657.    ****************************************************************************
  658.    private control, fieldValue, controlValue, typeText, typeValue
  659.  
  660.    if form.inEditMode
  661.       control = form.activeControl
  662.       if type("control.datalink") <> "U"
  663.          fieldValue = control.datalink          && name of table field
  664.  
  665.          typeText = type("control.text")
  666.          typeValue = type("control.value")
  667.          do case
  668.             case typeValue = "C"
  669.                controlValue = control.value
  670.             case typeValue $ "LU" .and. typeText = "C"
  671.                controlValue = control.text
  672.             otherwise
  673.                controlValue = Null
  674.          endcase
  675.          if controlValue <> &fieldValue
  676.             form.changesMade = .T.
  677.          endif
  678.       endif
  679.    endif
  680.    if form.changesMade .and. callCommit
  681.       CLASS::CheckCommit(form.inEditMode)     && Check transactions
  682.    endif
  683.  
  684.  
  685.  
  686.    ****************************************************************************
  687.  
  688.    procedure StartOrdersForm
  689.  
  690.    * Starts the Orders form in it's own session.  Note that control returns
  691.    * to the current session when this procedure is returned from.  This means
  692.    * that between the create session command and return you cannot access
  693.    * tables in the current session.
  694.    ****************************************************************************
  695.    local custNo
  696.  
  697.    custNo = customer->customer_n             && Pass current customer_n into
  698.                                              && orders form in the new session
  699.    create session
  700.    set talk off                              && Set these for the new session
  701.    set ldCheck off
  702.  
  703.    set procedure to &_dbwinhome.samples\Orders.wfm additive
  704.    form.childOrdersForm = new OrdersForm()   && Use Orders.wfm to add, view,
  705.                                              && edit, or delete an order.
  706.    form.childOrdersForm.top  =  this.top + 2
  707.    form.childOrdersForm.left =  this.left + 4
  708.    form.childOrdersForm.customer_n = custNo
  709.    form.childOrdersForm.parentCustomerForm = form  && Store a reference to this
  710.                                                    && form so that Orders can
  711.                                                    && call events in this form
  712.    form.childOrdersForm.open()
  713.  
  714.  
  715.    ****************************************************************************
  716.  
  717.    procedure CallShowOrders
  718.  
  719.    * Synchronizes the Orders form to the same customer.  This is done when
  720.    * Customer is run first (form.parentOrdersForm is undefined), and the Orders
  721.    * form has been opened (form.childOrdersForm is defined).
  722.    ****************************************************************************
  723.  
  724.    if type("form.parentOrdersForm") = "U"          && Customer is the parent form
  725.       if type ("form.childOrdersForm") <> "U"      && Orders form has been defined
  726.          form.childOrdersForm.ShowOrders(customer->customer_n, orders->order_no)
  727.       endif
  728.    endif
  729.  
  730.  
  731.    ****************************************************************************
  732.  
  733.    procedure ShowCustomer(custNo)
  734.  
  735.    * Called by Orders.wfm when it is the first form run.  Used to synchronize
  736.    * this form to the same customer for a given order displayed in Orders.
  737.    ****************************************************************************
  738.    private tempCustNo
  739.  
  740.    form.CheckChanged(.T.)
  741.    set order to customer_n
  742.    tempCustNo = custNo                    && Parameters are local so cannot macro
  743.    set key to "&tempCustNo"               && Only see corresponding customer
  744.    go top
  745.  
  746. ENDCLASS
  747.  
  748.  
  749.  
  750.